home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / doom / curemode.zip / EXTRACT.C < prev    next >
C/C++ Source or Header  |  1996-02-25  |  1KB  |  67 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <malloc.h>
  4. typedef struct{
  5.         char fn[0x40-8];
  6.         long pos,len;
  7.         }ENTRY;
  8.  
  9. ENTRY entrys[200];
  10. long num_entrys;
  11.  
  12. make_path(char *p)
  13. {
  14. char *t;
  15. char temp[0x40];
  16.  
  17.         sprintf(temp,"%s",p);
  18.         t=&temp[0];
  19.         while(*t)
  20.                 {
  21.                 if(*t=='/')
  22.                         {
  23.                         *t=0;
  24.                         mkdir(temp);
  25.                         *t='/';
  26.                         }
  27.                 t++;
  28.                 }
  29. }
  30.  
  31. main()
  32. {
  33. FILE *f;
  34. FILE *fo;
  35. long pos,len,dummy;
  36. long i;
  37. char *temp;
  38.  
  39.         f=fopen("id1.pak","rb");
  40.         fread(&dummy,sizeof(long),1,f);
  41.         fread(&pos,sizeof(long),1,f);
  42.         fread(&len,sizeof(long),1,f);
  43.         fseek(f,pos,SEEK_SET);
  44.         for(i=0;i<len/0x40;i++)
  45.                 fread(&entrys[i],sizeof(ENTRY),1,f);
  46.  
  47.         for(i=0;i<len/0x40;i++)
  48.                 {
  49.                 
  50. printf("%x:%x:%s\n",entrys[i].pos,entrys[i].len,entrys[i].fn);
  51.                 make_path(entrys[i].fn);
  52.                 fo=fopen(entrys[i].fn,"wb");
  53.                 fseek(f,entrys[i].pos,SEEK_SET);
  54.                 temp = malloc(entrys[i].len);
  55.                 fread(temp,sizeof(char),entrys[i].len,f);
  56.                 fwrite(temp,sizeof(char),entrys[i].len,fo);
  57.                 free(temp);
  58.                 fclose(fo);
  59.                 }
  60.         fclose(f);
  61.  
  62. }
  63.  
  64.  
  65.  
  66.  
  67.